<?php
class CP_UsersController extends XPHP_Controller
{
	/**
	 * Phương thức sẽ thực thi trước khi thực thi sau khi controller được khởi tạo
	 */
	public function _init()
	{
		//Load layout
		$this->loadLayout("Administrator");
		//Xác thực
		$this->helper->auth();
	}
	
	public function indexAction()
	{
		//Lấy ra toàn bộ danh sách các comment
		$user = new Areas_CP_Models_Users();
		if ($this->helper->session->data['member']->username != "admin")
			$userList = $user->select_all("type!=0", "id DESC");
		else 
			$userList = $user->select_all(false, "id DESC");
		//Trả về View
		$this->view->userList = $userList;
		
		return $this->view();
	}
	
	/**
	 * [[
	 * model: Areas_CP_Models_Users
	 * ]]
	 */
	//Thêm mới người dùng, chỉ admin mới có thể thêm mới
	public function createAction()
	{
		if ($this->helper->session->data['member']->username != "admin")
			return $this->redirect("index");
		else
			return $this->view();
	}
	
	/**
	 * [[
	 * model: Areas_CP_Models_Users
	 * ]]
	 */
	public function createPOST()
	{
		if ($this->hasModel())
		{
			if ($this->model->isValid())
			{
				//Kiểm tra tên người dùng đã tồn tại hay chưa
				$modelUsers = new Areas_CP_Models_Users();
				$data = $modelUsers->select("username='" . $this->model->username . "'");
				if (empty($data))
				{
					//Kiểm tra địa chỉ email
					$data = $modelUsers->select("email='" . $this->model->email . "'");
					if (empty($data))
					{
						$this->model->password = XPHP_String::md5Encode($this->model->password);
						$this->model->insert();
						//Trả về RedirectResult tới action index
						return $this->redirect("index");
					}
					else 
					//Thông báo địa chỉ email đã tồn tại
						$this->model->setErrorMessage("unique", "Địa chỉ email đã được sử dụng", "email");
				}
				//Nếu tồn tạo mã
				else
					$this->model->setErrorMessage("unique", "Tên đăng nhập đã tồn tại", "username");
			}
			else 
				echo "lỗi";
		}
	}

	public function editAction($args)
	{
		//Lấy ra thông tin user
		$model = new Areas_CP_Models_Users($args[0]);
		
		return $this->view($model);
	}
	
	/**
	 * [[
	 * model: Areas_CP_Models_Users
	 * ]]
	 */
	public function editPOST()
	{
		if($this->hasModel())
		{
			if($this->model->isValid())
			{
				$this->model->update();
				return $this->redirect("index");
			}
		}
	}
	
	public function detailAction($args)
	{
		//Lấy ra thông tin user
		$model = new Areas_CP_Models_Users($args[0]);
		
		$this->unloadLayout();
		return $this->view($model);
	}

	public function deleteAJAX()
	{
		$id = $this->params["id"];
		$model = new Areas_CP_Models_Users($id);
		$model->delete();
		return $this->json(array("success" => true));
	}
}